package cn.lili.modules.permission.service;

import cn.lili.modules.permission.entity.dos.Department;
import cn.lili.modules.permission.entity.dto.DepartmentEditDTO;
import cn.lili.modules.permission.entity.dto.DepartmentSearchParams;
import cn.lili.modules.permission.entity.vo.DepartmentVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 部门业务层
 *
 * @author Chopper
 * @since 2020/11/17 3:43 下午
 */
public interface DepartmentService extends IService<Department> {

    /**
     * 获取部门树
     *
     * @return 部门树
     */
    List<DepartmentVO> tree(DepartmentSearchParams departmentSearchParams);

    /**
     * 获取部门树
     *
     * @param scene   场景
     * @param storeId 店铺ID
     * @return 部门树
     */
    List<DepartmentVO> tree(String scene, String storeId);

    /**
     * 删除部门
     *
     * @param ids
     */
    void deleteDepartments(List<String> ids);

    /**
     * 根据ID获取部门
     *
     * @param id 部门ID
     * @return 部门
     */
    Department getById(String id);


    /**
     * 保存部门
     *
     * @param department 部门
     */
    void saveDepartment(Department department);

    /**
     * 根据ID更新部门
     *
     * @param departmentEditDTO 部门
     */
    void updateDepartment(DepartmentEditDTO departmentEditDTO);

    /**
     * 是否有部门引用了该角色
     *
     * @param roleIds 角色ID
     * @return 是否有部门引用了该角色
     */
    void containRoleIds(List<String> roleIds);
}